from elasticsearch import Elasticsearch

# 创建搜索实例
es = Elasticsearch(["127.0.0.1:9200"],
        sniff_on_start=True,            # 连接前测试
        sniff_on_connection_fail=True,  # 节点无响应时刷新节点
        sniffer_timeout=60 )

def search(body, index, searchs):
    """
    执行搜索操作
    :param body: 搜索请求体
    :param index: 索引名称
    :param searchs: 搜索类型，'search'表示搜索操作
    :return: 搜索结果数据列表
    """
    if searchs == 'search':
        # 搜索
        res = es.search(index=index, body=body)
        # 总数
        total_count = res['hits']['total']['value']
        # 获取搜索结果
        hits = res['hits']['hits']
        # 初始化空列表
        data = []
        # 遍历搜索结果
        for hit in hits:
            data.append(hit['_source'])
        # 返回响应
        return data

def index(body, index, searchs, id):
    """
    执行索引操作或更新操作
    :param body: 索引请求体
    :param index: 索引名称
    :param searchs: 搜索类型，'index'表示索引操作，'update'表示更新操作
    :param id: 文档ID
    """
    if searchs == 'index':
        # 索引操作
        es.index(index=index, id=id, body=body)
    elif searchs == 'update':
        # 更新操作
        es.update(index=index, id=id, body=body)